home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Software Vault: The Diamond Collection
/
The Diamond Collection (Software Vault)(Digital Impact).ISO
/
cdr37
/
nwsf121.zip
/
NEWSFLSH.PPE
(
.txt
)
< prev
next >
Wrap
PCBoard Programming Language Executable
|
1995-03-20
|
6KB
|
466 lines
Function FUNCTION000
Function FUNCTION000
;------------------------------------------------------------------------------
; .ss.
; `²²'
; .,sS$Ss,,s$ .,sS$$$Ss. .,sS$Ss,,s$ .ss. .sSs.
; .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
; $$$' .$$$' $$$²Sçsµ²' .$$$' .$$$'.$$$' .$$$' `$$b.
; $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$' ;$$$
; `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
; .sS²°$$$²²°"' d²°'
; .$$² .$$'
; $$$.,d$$'
; `²S$$S²'
;------------------------------------------------------------------------------
; P.P.L.X. 2.OO (C)1996 - Lone Runner / AEGiS CoRP'96
;------------------------------------------------------------------------------
; PPE 3.1O (Encryption type I) - Analysis ON - Postprocessing ON
;------------------------------------------------------------------------------
Boolean BOOLEAN001
Boolean BOOLEAN002
Boolean BOOLEAN003
Boolean BOOLEAN004
Boolean BOOLEAN005
Integer INTEGER001
Integer INTEGER003
Integer INTEGER004
Integer INTEGER006
Integer INTEGER007
Integer INTEGER008
Integer INTEGER009
Integer INTEGER010
Integer INTEGER011
Integer INTEGER012
String STRING001
String STRING002
String STRING003
String STRING004
String STRING005
String STRING006
String STRING007
String STRING008
String STRING009
String STRING010
String STRING011
String STRING015
String STRING017
String STRING018
String STRING019
String STRING020
String STRING021
String STRING022
String STRING023
String STRING024
String STRING025
String STRING026
String STRING027
String STRING028
String STRING029
String STRING030
String STRING031
String STRING032
String STRING033
Declare Function FUNCTION001(Date DATE001, Date DATE002) Integer
Declare Function FUNCTION002(Integer INTEGER002) String
Declare Function FUNCTION004() String
Declare Function FUNCTION006(String STRING012, String STRING013, String STRING014, Integer INTEGER005) Boolean
Declare Function FUNCTION007(String STRING016) Integer
;------------------------------------------------------------------------------
Goto LABEL004
End
;------------------------------------------------------------------------------
Function FUNCTION001(Date DATE001, Date DATE002) Integer
Integer INTEGER002
FUNCTION001 = Abs(DATE001 - DATE002)
EndFunc
;------------------------------------------------------------------------------
Function FUNCTION002(Integer INTEGER002) String
Boolean BOOLEAN001
String STRING002
String STRING003
BOOLEAN001 = 0
STRING002 = ""
:LABEL001
If (BOOLEAN001) Goto LABEL003
FGet INTEGER002, STRING002
If (Ferr(INTEGER002)) Then
BOOLEAN001 = 1
Else
If ((Trim(STRING002, " ") == "") || (Left(STRING002, 1) == ";")) Goto LABEL002
Goto LABEL003
:LABEL002
Goto LABEL001
Endif
:LABEL003
If (BOOLEAN001 == 1) STRING002 = ""
FUNCTION002 = STRING002
EndFunc
STRING004 = GetEnv("PCBDRIVE") + GetEnv("PCBDIR") + "\PCBOARD.SYS"
STRING005 = ReadLine(PCBDat(), 27) + "PCBTEXT"
If (ReadLine(PCBDat(), 74) == 0) Then
STRING003 = STRING005
Else
INTEGER003 = FNext()
FOpen INTEGER003, STRING004, 0, 0
FSeek INTEGER003, 80, 0
FRead INTEGER003, STRING006, 4
FClose INTEGER003
STRING005 = Trim(STRING005 + STRING006, " ")
If (Right(STRING005, 1) == ".") STRING005 = Trim(STRING005, ".")
STRING003 = STRING005
Endif
EndFunc
;------------------------------------------------------------------------------
Function FUNCTION004() String
String STRING008
String STRING009
Integer INTEGER004
Function FUNCTION005
STRING008 = GetEnv("PCBDRIVE") + GetEnv("PCBDIR") + "\PCBOARD.SYS"
If (ReadLine(PCBDat(), 74) == 0) Then
FUNCTION004 = ""
Else
INTEGER004 = FNext()
FOpen INTEGER004, STRING008, 0, 0
FSeek INTEGER004, 80, 0
FRead INTEGER004, STRING009, 4
FClose INTEGER004
STRING009 = Trim(STRING009, " ")
If (Left(STRING009, 1) == ".") STRING009 = ""
FUNCTION004 = STRING009
Endif
EndFunc
STRING011 = Trim("", " ") + Trim("", " ")
STRING010 = Abs(XOr(Crc32(0, STRING011), Crc32(0, "")))
EndFunc
;------------------------------------------------------------------------------
Function FUNCTION006(String STRING012, String STRING013, String STRING014, Integer INTEGER005) Boolean
String STRING015
Function FUNCTION007
STRING015 = Trim(STRING012, " ") + Trim(STRING013, " ")
FUNCTION006 = (INTEGER005 == Abs(XOr(Crc32(0, STRING015), Crc32(0, STRING014))))
EndFunc
;------------------------------------------------------------------------------
Function FUNCTION007(String STRING016) Integer
String STRING017
If (Left(STRING016, 2) == "~~") Then
FUNCTION007 = 1
Else
FUNCTION007 = 0
Endif
EndFunc
:LABEL004
STRING033 = "1.21"
STRING019 = PPEPath() + "NFHDR"
STRING018 = PPEPath() + PPEName() + ".CFG"
INTEGER012 = 8675309
STRING030 = ""
STRING031 = "@X0CUNREGISTERED@X07"
STRING032 = "000000000"
BOOLEAN004 = 0
BOOLEAN005 = 0
STRING024 = "4A"
STRING023 = "0F"
STRING025 = "0C"
STRING027 = "0203050607090A0B0C0D0E0F"
STRING028 = STRING027 + "01041012141617181A1B1C1D1E1F"
STRING028 = STRING028 + "202124252628292A2B2C2E2F3031343536383A3B3C3E3F"
STRING028 = STRING028 + "40414243454748494A4B4C4D4E4F5051525354565758595A5B5C5D5E5F"
STRING028 = STRING028 + "606162636768696A6B6C6D6E6F70717274757678797A7B7C7E7F"
STRING029 = STRING027 + "01041012141617181A1B1C1D1E1F"
STRING029 = STRING029 + "40414243454748494A4B4C4D4E4F5051525354565758595A5B5C5D5E5F"
STRING029 = STRING029 + "606162636768696A6B6C6D6E6F70717274757678797A7B7C7E7F"
STRING029 = STRING029 + "202124252628292A2B2C2E2F3031343536383A3B3C3E3F"
INTEGER008 = FNext()
If (Exist(PPEPath() + PPEName() + ".KEY")) Then
FOpen INTEGER008, PPEPath() + PPEName() + ".KEY", 0, 2
FGet INTEGER008, STRING030
FGet INTEGER008, STRING031
FGet INTEGER008, STRING032
FClose INTEGER008
BOOLEAN003 = FUNCTION006(STRING030, STRING031, INTEGER012, STRING032)
If (BOOLEAN003) Goto LABEL005
STRING030 = ""
STRING031 = "@X0CUNREGISTERED@X07"
STRING032 = "000000000"
Endif
:LABEL005
If (TokCount() > 0) Then
STRING022 = GetToken()
If (Upper(STRING022) == "MAINT") Then
BOOLEAN004 = 1
STRING020 = PPEPath() + "NEWSTMP.$@$"
If (TokCount() > 0) Then
STRING022 = GetToken()
BOOLEAN005 = 1
Endif
Goto LABEL006
Endif
BOOLEAN005 = 1
Endif
:LABEL006
INTEGER008 = FNext()
FOpen INTEGER008, STRING018, 0, 0
If (Ferr(INTEGER008)) Then
If (BOOLEAN005) Goto LABEL007
Log PPEName() + ".CFG file missing", 0
End
Goto LABEL008
:LABEL007
Else
:LABEL008
INTEGER010 = 0
While (!Ferr(INTEGER008) && (INTEGER010 < 5)) Do
STRING021 = FUNCTION002(INTEGER008)
If (Len(STRING021) == 0) Break
Select Case (INTEGER010)
Case 0
STRING017 = PPEPath() + Trim(STRING021, " ")
If (Exist(STRING017 + FUNCTION004())) Goto LABEL009
If (!Exist(STRING017)) End
Goto LABEL010
:LABEL009
STRING017 = STRING017 + FUNCTION004()
:LABEL010
Case 1
If (Len(STRING021) == 0) STRING021 = "120"
INTEGER011 = S2I(STRING021, 10)
Case 2
If (Len(STRING021) == 0) STRING021 = "4A"
If (Upper((Left(STRING021, 2) == "RA"))) Then
INTEGER007 = Random(Len(STRING028) - 1) + 1
INTEGER007 = INTEGER007 - 1 - INTEGER007 % 2
STRING021 = Mid(STRING028, INTEGER007, 2)
Endif
STRING024 = Trim(STRING021, " ")
STRING024 = "@X" + STRING024
Case 3
If (Len(STRING021) == 0) STRING021 = "0F"
If (Upper((Left(STRING021, 2) == "RA"))) Then
INTEGER007 = Random(Len(STRING027) - 1) + 1
INTEGER007 = INTEGER007 - 1 - INTEGER007 % 2
STRING021 = Mid(STRING027, INTEGER007, 2)
Endif
STRING023 = Trim(STRING021, " ")
STRING023 = "@X" + STRING023
Case 4
If (Len(STRING021) == 0) STRING021 = "0C"
If (Upper((Left(STRING021, 2) == "RA"))) Then
INTEGER007 = Random(Len(STRING029) - 1) + 1
INTEGER007 = INTEGER007 - 1 - INTEGER007 % 2
STRING021 = Mid(STRING029, INTEGER007, 2)
Endif
STRING025 = Trim(STRING021, " ")
STRING025 = "@X" + STRING025
Case Else
Log PPEName() + ".CFG SELECT BLOCK ERROR", 0
End Select
Inc INTEGER010
EndWhile
FClose INTEGER008
Endif
If (BOOLEAN005) STRING017 = STRING022
If (Exist(STRING017 + FUNCTION004())) Goto LABEL011
If (!Exist(STRING017)) End
Goto LABEL012
:LABEL011
STRING017 = STRING017 + FUNCTION004()
:LABEL012
If (Len(STRING017) == 0) End
Cls
PrintLn "@X0ANewsFlash Version " + STRING033
If (BOOLEAN003) Then
Print "@X0ARegistered to: @X0E" + STRING031
PrintLn " @X0A #@X0E" + STRING032 + "@X07"
Else
PrintLn STRING031
Endif
If (BOOLEAN004) Goto LABEL013
If (Exist(STRING019)) DispFile STRING019, 1 + 4 + 2
INTEGER008 = FNext()
STRING026 = CurColor()
FOpen INTEGER008, STRING017, 0, 0
FGet INTEGER008, STRING021
While (!Ferr(INTEGER008) && !Abort()) Do
INTEGER010 = FUNCTION007(STRING021)
Select Case (INTEGER010)
Case 0
PrintLn STRING023 + STRING021
Color STRING026
Case 1
STRING021 = Trim(STRING021, "~~")
If (FUNCTION001(Date(), STRING021) > INTEGER011) Break
Newline
Print STRING024 + STRING021
Color STRING026
Newline
Print STRING025 + "▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀"
Color STRING026
Newline
End Select
FGet INTEGER008, STRING021
EndWhile
FCloseAll
Goto LABEL016
:LABEL013
INTEGER008 = FNext()
FOpen INTEGER008, STRING017, 0, 0
INTEGER009 = FNext()
FCreate INTEGER009, STRING020, 1, 3
FGet INTEGER008, STRING021
:LABEL014
If (Ferr(INTEGER008)) Goto LABEL015
INTEGER010 = FUNCTION007(STRING021)
Select Case (INTEGER010)
Case 0
FPutLn INTEGER009, STRING021
SPrintLn STRING021
Case 1
STRING021 = Trim(STRING021, "~~")
If (FUNCTION001(Date(), STRING021) > INTEGER011) Goto LABEL015
STRING021 = "~~" + STRING021
FPutLn INTEGER009, STRING021
SPrintLn STRING021
End Select
FGet INTEGER008, STRING021
Goto LABEL014
:LABEL015
FCloseAll
Copy STRING020, STRING017
Delete STRING020
Log "NewsFlash Maintanence Run Completed -" + STRING017, 0
:LABEL016
End
;------------------------------------------------------------------------------
;
; Usage report (before postprocessing)
;
; ■ Statements used :
;
; 6 End
; 1 Cls
; 3 Color
; 59 Goto
; 93 Let
; 3 Print
; 4 PrintLn
; 47 If
; 1 DispFile
; 1 FCreate
; 6 FOpen
; 4 FClose
; 8 FGet
; 2 FPutLn
; 1 Delete
; 3 Log
; 1 Inc
; 3 Newline
; 2 SPrintLn
; 2 FSeek
; 2 FRead
; 1 Copy
; 2 FCloseAll
; 7 EndFunc
;
;
; ■ Functions used :
;
; 3 %
; 48 +
; 10 -
; 28 ==
; 1 <
; 4 >
; 35 !
; 2 &&
; 1 ||
; 9 Len(
; 4 Upper()
; 3 Mid()
; 6 Left()
; 1 Right()
; 5 Ferr()
; 1 Abort()
; 14 Trim()
; 3 Random()
; 2 Date()
; 3 PCBDat()
; 6 PPEPath()
; 3 ReadLine()
; 2 GetToken()
; 4 GetEnv()
; 6 Exist()
; 1 S2I()
; 2 XOr()
; 3 Abs()
; 5 PPEName()
; 1 CurColor()
; 2 TokCount()
; 4 Crc32()
; 7 FNext()
;
;------------------------------------------------------------------------------
;
; Analysis flags : d
;
; d - Access PCBOARD.DAT ■ 2
; Program gets the full pathname to PCBOARD.DAT, this may be usefull
; for many PPE so they can find various informations on the system
; (system paths, max number of lines in messages, ...) but it may also
; be a way to gather vital informations.
; ■ Search for : PCBDAT()
;
;------------------------------------------------------------------------------
;
; Postprocessing report
;
; 0 For/Next
; 2 While/EndWhile
; 13 If/Then or If/Then/Else
; 3 Select Case
;
;------------------------------------------------------------------------------
; AEGiS Corp - Break the routines, code against the machines!
;------------------------------------------------------------------------------